home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Champak 62
/
Volume 62 - JOGO DISK .iso
/
Games
/
penguin_dinner.swf
/
scripts
/
__Packages
/
classes
/
game
/
Guest.as
< prev
next >
Wrap
Text File
|
2008-03-17
|
15KB
|
432 lines
class classes.game.Guest extends MovieClip
{
static var highlightColor = 39168;
var locked = false;
var selected = false;
var atTable = false;
var mood = 3;
var worstMood = 3;
var paused = false;
static var EVENT_LEAVE_QUEUE = "event_leave_queue";
static var EVENT_LEAVE_SCREEN = "event_leave_screen";
static var STATE_GOING_TO_QUEUE_PLACE = "going_to_queue_place";
static var STATE_WAITING_IN_QUEUE = "waiting_in_queue";
static var STATE_GOING_TO_TABLE = "state_going_to_table";
static var STATE_READING_MENU = "reading_menu";
static var STATE_WAITING_FOR_WAITER = "waiting_for_waiter";
static var STATE_WAITING_FOR_FOOD = "waiting_for_food";
static var STATE_WAITING_FRIEND_EATING = "waiting_friend_eating";
static var STATE_EATING = "eating";
static var STATE_LEAVING = "leaving";
static var STATE_WALKING = "walking";
function Guest()
{
super();
this.food = classes.game.Food.randomFood();
com.gskinner.events.GDispatcher.initialize(this);
this.queue = new classes.game.CharActionQueue();
var _loc3_ = [[0,1,2,3,4,5,6],[7,8,9,10,11],[12,13,14,15,16]];
var _loc4_ = classes.core.SOManager.getInstance().__get__currentStage();
var _loc5_ = _loc3_[_loc4_][Math.floor(Math.random() * _loc3_[_loc4_].length)];
this.clothes = "clothes_" + _loc5_;
this.state = classes.game.Guest.STATE_GOING_TO_QUEUE_PLACE;
}
function setup($friend, $currentTile, $placeTile, $firstInQueue)
{
this.firstInQueue = $firstInQueue;
if(this.firstInQueue)
{
this.enableMouseActions();
}
this.friend = $friend;
this.currentTile = $currentTile;
this.moveTo($placeTile.x,$placeTile.y);
}
function moveTo(tileX, tileY)
{
this.queue.setTargetTile(this.currentTile,new classes.math.Tile(tileX,tileY,0,0,0),this.speed);
this.currentTile.x = tileX;
this.currentTile.y = tileY;
}
function shiftInQueue($firstInQueue)
{
this.firstInQueue = $firstInQueue;
if(this.firstInQueue)
{
this.enableMouseActions();
}
this.moveTo(this.currentTile.x + 2,this.currentTile.y);
this.state = classes.game.Guest.STATE_GOING_TO_QUEUE_PLACE;
this.setState();
}
function makeOrder()
{
this.mood = 3;
this.moodCount = 0;
this.state = classes.game.Guest.STATE_WAITING_FOR_FOOD;
this.setState();
this.bubble.gotoAndStop(this.food);
if(this.table.guests[0] == this)
{
this.bubble._xscale = -100;
}
}
function startEating()
{
this.mood = 3;
this.stateCount = 0;
this.state = classes.game.Guest.STATE_EATING;
this.setState();
}
function moveToTable($table)
{
this.disableMouseActions();
this.filters = [];
this.table = $table;
this.table.setGuests(classes.game.Guest.selectedGuests);
var _loc2_ = this.table.guests[0] != this ? this.table.tileLeftPlace : this.table.tileRightPlace;
this.moveTo(_loc2_.x,_loc2_.y);
this.state = classes.game.Guest.STATE_GOING_TO_TABLE;
}
function update()
{
switch(this.state)
{
case classes.game.Guest.STATE_GOING_TO_QUEUE_PLACE:
if(this.setWalkingState())
{
this.moodCount = 0;
this.state = classes.game.Guest.STATE_WAITING_IN_QUEUE;
this.setState();
}
break;
case classes.game.Guest.STATE_WAITING_IN_QUEUE:
if(this.firstInQueue)
{
this.moodCount = this.moodCount + 1;
if(this.moodCount >= classes.game.GameData.__get__GUEST_CHANGE_MOOD_TIME())
{
this.moodCount = 0;
this.worsenMood();
if(this.mood > 0)
{
this.setState();
}
else
{
this.disableMouseActions();
this.dispatchEvent(new classes.events.WidgetEvent(this,classes.game.Guest.EVENT_LEAVE_QUEUE));
this.deactivate();
this.moveTo(0,3);
this.state = classes.game.Guest.STATE_LEAVING;
}
}
}
break;
case classes.game.Guest.STATE_GOING_TO_TABLE:
if(this.setWalkingState())
{
this.enableMouseActions();
this.stateCount = 0;
this.atTable = true;
if(this.table.guests[0] == this)
{
this._xscale = -100;
}
this.state = classes.game.Guest.STATE_READING_MENU;
this.setState();
}
break;
case classes.game.Guest.STATE_READING_MENU:
this.stateCount = this.stateCount + 1;
if(this.stateCount >= classes.game.GameData.__get__GUEST_READING_MENU_TIME())
{
this.mood = 3;
this.moodCount = 0;
this.state = classes.game.Guest.STATE_WAITING_FOR_WAITER;
this.setState();
if(this.friend.state == classes.game.Guest.STATE_READING_MENU)
{
classes.core.SoundManager.getInstance().startSound("hello");
this.friend.mood = 3;
this.friend.moodCount = 0;
this.friend.state = classes.game.Guest.STATE_WAITING_FOR_WAITER;
this.friend.setState();
}
if(!this.friend)
{
classes.core.SoundManager.getInstance().startSound("hello");
}
}
break;
case classes.game.Guest.STATE_WAITING_FOR_WAITER:
this.moodCount = this.moodCount + 1;
if(this.moodCount >= classes.game.GameData.__get__GUEST_CHANGE_MOOD_TIME())
{
this.moodCount = 0;
this.worsenMood();
if(this.mood > 0)
{
this.setState();
}
else
{
this.table.setGuests();
this._xscale = 100;
this.atTable = false;
this.moveTo(31,5);
this.state = classes.game.Guest.STATE_LEAVING;
if(this.friend.state == classes.game.Guest.STATE_WAITING_FOR_WAITER)
{
this.friend._xscale = 100;
this.friend.atTable = false;
this.friend.moveTo(31,7);
this.friend.state = classes.game.Guest.STATE_LEAVING;
}
}
}
break;
case classes.game.Guest.STATE_WAITING_FOR_FOOD:
this.moodCount = this.moodCount + 1;
if(this.moodCount >= classes.game.GameData.__get__GUEST_CHANGE_MOOD_TIME())
{
this.moodCount = 0;
this.worsenMood();
if(this.mood > 0)
{
this.setState();
}
else if(this.friend)
{
this.mood = 1;
this.table.showMoney();
this.state = classes.game.Guest.STATE_WAITING_FRIEND_EATING;
this.setState();
}
else
{
this._xscale = 100;
this.atTable = false;
this.moveTo(31,6);
this.state = classes.game.Guest.STATE_LEAVING;
this.table.setGuests();
}
}
break;
case classes.game.Guest.STATE_EATING:
this.stateCount = this.stateCount + 1;
if(this.stateCount >= classes.game.GameData.__get__GUEST_EATING_TIME())
{
this.table.guestFinishedEating(this,this.worstMood);
if(this.friend)
{
this.state = classes.game.Guest.STATE_WAITING_FRIEND_EATING;
this.setState();
}
else
{
this.disableMouseActions();
this._xscale = 100;
this.atTable = false;
this.moveTo(31,6);
this.state = classes.game.Guest.STATE_LEAVING;
this.table.setGuests();
}
}
break;
case classes.game.Guest.STATE_WAITING_FRIEND_EATING:
if(this.friend.state == classes.game.Guest.STATE_WAITING_FRIEND_EATING)
{
this.disableMouseActions();
this._xscale = 100;
this.atTable = false;
this.moveTo(31,5);
this.state = classes.game.Guest.STATE_LEAVING;
this.friend.disableMouseActions();
this.friend._xscale = 100;
this.friend.atTable = false;
this.friend.moveTo(31,7);
this.friend.state = classes.game.Guest.STATE_LEAVING;
this.table.setGuests();
}
break;
case classes.game.Guest.STATE_LEAVING:
if(this.setWalkingState())
{
this.dispatchEvent(new classes.events.WidgetEvent(this,classes.game.Guest.EVENT_LEAVE_SCREEN));
this.removeMovieClip();
}
}
}
function worsenMood()
{
this.mood = this.mood - 1;
if(this.mood < this.worstMood)
{
this.worstMood = this.mood;
}
}
function enableMouseActions()
{
this.onRollOver = this.activate;
this.onPress = this.mousePressHandler;
this.onRollOut = this.onDragOut = this.onReleaseOutside = this.deactivate;
}
function disableMouseActions()
{
delete this.onRollOver;
delete this.onRelease;
delete this.onRollOut;
delete this.onDragOut;
delete this.onReleaseOutside;
}
function activate()
{
if(this.locked || this.paused)
{
return undefined;
}
switch(this.state)
{
case classes.game.Guest.STATE_WAITING_IN_QUEUE:
case classes.game.Guest.STATE_READING_MENU:
case classes.game.Guest.STATE_WAITING_FOR_WAITER:
case classes.game.Guest.STATE_WAITING_FOR_FOOD:
case classes.game.Guest.STATE_WAITING_FRIEND_EATING:
case classes.game.Guest.STATE_EATING:
this.friend.filters = _loc0_ = [new flash.filters.GlowFilter(classes.game.Guest.highlightColor,1,8,8,2,1)];
this.filters = _loc0_;
}
}
function mousePressHandler()
{
if(this.locked || this.paused)
{
return undefined;
}
switch(this.state)
{
case classes.game.Guest.STATE_WAITING_IN_QUEUE:
if(!this.selected)
{
classes.core.SoundManager.getInstance().startSound("click_penguin");
this.selected = true;
this.filters = [new flash.filters.GlowFilter(classes.game.Guest.highlightColor,1,8,8,2,1)];
classes.game.Guest.selectedGuests.push(this);
if(this.friend)
{
this.friend.selected = true;
this.friend.filters = [new flash.filters.GlowFilter(classes.game.Guest.highlightColor,1,8,8,2,1)];
classes.game.Guest.selectedGuests.push(this.friend);
}
}
break;
case classes.game.Guest.STATE_READING_MENU:
case classes.game.Guest.STATE_WAITING_FOR_WAITER:
case classes.game.Guest.STATE_WAITING_FOR_FOOD:
case classes.game.Guest.STATE_WAITING_FRIEND_EATING:
case classes.game.Guest.STATE_EATING:
this.table.onPress();
}
}
function deactivate()
{
if(this.locked || this.paused)
{
return undefined;
}
switch(this.state)
{
case classes.game.Guest.STATE_WAITING_IN_QUEUE:
if(!this.selected)
{
this.friend.filters = _loc0_ = [];
this.filters = _loc0_;
}
break;
case classes.game.Guest.STATE_READING_MENU:
case classes.game.Guest.STATE_WAITING_FOR_WAITER:
case classes.game.Guest.STATE_WAITING_FOR_FOOD:
case classes.game.Guest.STATE_WAITING_FRIEND_EATING:
case classes.game.Guest.STATE_EATING:
this.friend.filters = _loc0_ = [];
this.filters = _loc0_;
}
}
function pause()
{
this.paused = true;
this.useHandCursor = false;
if(this.state == classes.game.Guest.STATE_LEAVING || this.state == classes.game.Guest.STATE_GOING_TO_QUEUE_PLACE || this.state == classes.game.Guest.STATE_GOING_TO_TABLE)
{
this[this.lastStateFullName].stop();
}
}
function unpause()
{
this.paused = false;
this.useHandCursor = true;
var _loc2_ = this[this.lastStateFullName];
if(this.state == classes.game.Guest.STATE_LEAVING || this.state == classes.game.Guest.STATE_GOING_TO_QUEUE_PLACE || this.state == classes.game.Guest.STATE_GOING_TO_TABLE)
{
_loc2_.play();
}
}
function setState()
{
this.gotoAndStop(this.state);
this[this.state].head.gotoAndStop("mood_" + this.mood);
this[this.state].body.gotoAndStop(this.clothes);
this[this.state].flipper.gotoAndStop(this.clothes);
this[this.state].flipper_b.gotoAndStop(this.clothes);
this.lastStateFullName = this.state;
}
function setWalkingState()
{
var _loc2_ = this.queue.getCoords();
this._x = _loc2_.x;
this._y = _loc2_.y;
var _loc6_ = Math.abs(_loc2_.dx);
var _loc5_ = Math.abs(_loc2_.dy);
var _loc4_ = undefined;
if(_loc6_ + _loc5_ > 0.1)
{
if(_loc6_ > _loc5_)
{
if(_loc2_.dx > 0)
{
_loc4_ = classes.const.Direction.RIGHT;
}
else
{
_loc4_ = classes.const.Direction.LEFT;
}
}
else if(_loc2_.dy > 0)
{
_loc4_ = classes.const.Direction.DOWN;
}
else
{
_loc4_ = classes.const.Direction.UP;
}
var _loc3_ = classes.game.Guest.STATE_WALKING + "_" + _loc4_;
this.gotoAndStop(_loc3_);
this[_loc3_].body.gotoAndStop(this.clothes);
this[_loc3_].flipper.gotoAndStop(this.clothes);
this[_loc3_].flipper_b.gotoAndStop(this.clothes);
this.lastStateFullName = _loc3_;
}
return _loc2_.end;
}
function addEventListener(eventType, scope, functionName)
{
}
function removeEventListener(eventType, scope, functionName)
{
}
function dispatchEvent(event)
{
}
}